#ifndef NFTABLES_H
#define NFTABLES_H
#include "nftables.h"
#include <iostream>

class Nftables {
private:
    std::string interface{"eth0"};
public:
    void install();
    void print_ruleset();
    void save_ruleset();
    void flush_ruleset();
    void enableLogging();

    void add_filter_table_ip_v4();
    void add_input_rules_in_filter_table_to_ip_v4_to_accept();
    void add_forward_rules_in_filter_table_to_ip_v4_to_drop();
    void add_output_rules_in_filter_table_to_ip_v4_to_accept();

    void add_input_rules_in_filter_table_to_ip_v4_to_drop();
    void add_output_rules_in_filter_table_to_ip_v4_to_drop();

    void add_filter_table_ip_v6();
    void add_input_rules_in_filter_table_to_ip_v6_to_drop();
    void add_forward_rules_in_filter_table_to_ip_v6_to_drop();
    void add_output_rules_in_filter_table_to_ip_v6_to_drop();

    void setInteface(std::string interface);
    std::string getInteface();
};


#endif
